<?php
namespace PsiFramework\Applications\AlloMediaPortal\Classes\Model;

import("Classes.Model.Object");
import("Applications.AlloMediaPortal.Classes.Model.InformationProfile");

use \PsiFramework\Classes\Model\Object;
use \PsiFramework\Applications\AlloMediaPortal\Classes\Model\InformationProfile;

/**
 * AlloMedia
 * Portail des professionnels
 *
 * @author Rémi San
 * @version beta
 */

/**
 * Classe d'une partie de formulaire d'informations
 *
 * @package Model
 */
class InformationPart extends Object
{

    protected /*InformationProfile*/ $_profile ;
    protected /*Form*/               $_theme ;
    protected /*int*/                $_order ;
    protected /*double*/             $_price ;
    protected /*int*/                $_points ;
    protected /*Date*/               $_creationDate;
    protected /*Date*/               $_modificationDate;

    /**
     * Constructeur
     *
     * @param InformationProfile $profile          Le formulaire concerné
     * @param Form               $theme            Le theme concerné
     * @param int                $order            L'ordre du theme dans
     *                                              le formulaire
     * @param double             $price            Le prix du theme pour
     *                                              le formulaire
     * @param int                $points           Les points du theme dans
     *                                              le formulaire
     * @param Date               $creationDate     La date de liaison
     *                                              au formulaire
     * @param Date               $modificationDate La date de modification de
     *                                              la liaison au formulaire
     */
    public function __construct(
        /*InformationProfile*/ $profile=null,
        /*Form*/ $theme=null,
        /*int*/ $order=null,
        /*double*/ $price=null,
        /*int*/ $points=null,
        /*Date*/ $creationDate=null,
        /*Date*/ $modificationDate=null
    )
    {
        $this->_profile = $profile ;
        $this->_theme = $theme ;
        $this->_order = $order ;
        $this->_price = $price ;
        $this->_points = $points ;
        $this->_creationDate = $creationDate    ;
        $this->_modificationDate = $modificationDate ;
    }

    public function getId()
    {
        if (is_null($this->_profile) && is_null($this->_theme)) {
        	return null ;
        } else {
            $id = array();
            if (!is_null($this->_profile)) {
            	$id["profile"] = $this->_profile ;
            }
            if (!is_null($this->_theme)) {
            	$id["theme"] = $this->_theme ;
            }
            return $id ;
        }
    }

    public function getProfile()
    {
        return $this->_profile ;
    }

    public function setProfile($profile)
    {
        $this->_profile = $profile ;
    }

    public function getTheme()
    {
        return $this->_theme ;
    }

    public function setTheme($theme)
    {
        $this->_theme = $theme ;
    }

    public function getOrder()
    {
        return $this->_order ;
    }

    public function setOrder($order)
    {
        $this->_order = $order ;
    }

    public function getPrice()
    {
        return $this->_price ;
    }

    public function setPrice($price)
    {
        $this->_price = (isNullOrEmptyString($price))?null:(double)$price ;
    }

    public function getPoints()
    {
        return $this->_points ;
    }

    public function setPoints($points)
    {
        $this->_points = $points ;
    }

    public function getCreationDate()
    {
        return $this->_creationDate ;
    }

    public function setCreationDate($creationDate)
    {
        $this->_creationDate = $creationDate ;
    }

    public function getModificationDate()
    {
        return $this->_modificationDate ;
    }

    public function setModificationDate($modificationDate)
    {
        $this->_modificationDate = $modificationDate ;
    }

    public function isFree(){
        return (isNullOrEmptyString($this->_price) || $this->_price == 0) ;
    }
    
    public function toString()
    {

    }
}
